#!/usr/bin/python

import sys
import server
import friends



class main():
	
	def __init__(self, ID, port):
		# Lista que contiene las referencias a los modulso cargados
		self.modulelist = { }
		self.id = ID
		self.host = "localhost"
		self.port = port
		
		
	def debug(self, text):
		if self.modulelist["debugmodule"]:
			self.modulelist["debugmodule"].showsimple(text)
	def startrpc(self, p=0):
		#chapuza
		if p != self.port:
			self.port = p
		self.server = server.server(self.port, self.host, self.modulelist)
		self.server.start()
		self.debug("Servidor RPC Arrancado")
		self.server.loadcontrolrpcsystem()
	#esta funcion tiene que cambiar
	def loadfriendfromdoc(self, doc="friends"):
		f = open(doc)
		t = "1"		
		while t != "":
			t = f.readline()
			if not(t.split(' ')[0] == ""):
				self.addfriend(t.split(' ')[0], t.split(' ')[1], t.split(' ')[2], t.split(' ')[3], t.split(' ')[4])
				
				
	#funcion que carga un modulo en su sitio
	def loadmodule(self, modulename, mountpoint):
		tempvar = __import__(modulename)
		self.modulelist[mountpoint] = tempvar.start()
		return True
	def addfriend(self, ID, host, port, mod, am):
		#agrega un amigo, am establece el modo en que se agrega
		
		newfriend = friends.friend(ID, host, port, mod)
		testbit = 0
		if am[0] == "1":
			#conexion de prueba sies correcta testbit = 1
			pass
		if am[1] == "1":
			#agregar al fichero de amigos
			pass
		if am[2] == "1":
			#agregar el amigo al servidor (por lo tanto conectar)
			self.server.addfriend(newfriend)
			pass	
		return newfriend

if __name__ == "__main__":
	#crear instancia principal del programa
	m = main("Xalda2F", int(sys.argv[1]))
	m.loadmodule("debugmodule", "debugmodule")
	#arrancar servidor rpc
	m.startrpc(int(sys.argv[1]))
	#cargar amigos en memoria desde un documento y los carga en el server.
	m.loadfriendfromdoc()
	#agregar un amigo
	#t = m.addfriend("palmerote" , "localhost", 9005,5, "001")
	
